package org.dromara.comm.Utils;

import com.alibaba.fastjson.JSONObject;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import java.io.PrintWriter;

//@Component
//public class TokenInterceptor implements HandlerInterceptor {
//
//    @Override
//    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//
//        if ("OPTIONS".equals(request.getMethod())) {
//            response.setStatus(HttpServletResponse.SC_OK);
//            return true;
//        }
//
//        response.setCharacterEncoding("utf-8");
//        String uri = request.getRequestURI();
//        System.out.println("Request URI: " + uri);
//
//        // 检查是否为排除路径
//        if (isExcluded(uri)) {
//            System.out.println("排除路径，不做验证: " + uri);
//            return true;
//        }
//
//        // header里面的字段名取决于前端放置的字段名
//        String token = request.getHeader("Authorization");
//        if (token != null) {
//            boolean result = TokenUtil.verify(token);
//            if (result) {
//                System.out.println("通过拦截器");
//                return true;
//            }
//        }
//
//        response.setCharacterEncoding("UTF-8");
//        response.setContentType("application/json; charset=utf-8");
//        PrintWriter out = null;
//        try {
//            JSONObject json = new JSONObject();
//            json.put("success", "false");
//            json.put("msg", "认证失败，未通过拦截器");
//            json.put("code", "500");
//            response.getWriter().append(json.toJSONString());
//            System.out.println("认证失败，未通过拦截器");
//        } catch (Exception e) {
//            e.printStackTrace();
//            response.sendError(500);
//            return false;
//        }
//        return false;
//    }
//
//    private boolean isExcluded(String uri) {
//        return uri.equals("/user/logins") || uri.equals("/auth/login") ||
//            uri.startsWith("/doc.html") || uri.startsWith("/swagger-ui.html") ||
//            uri.startsWith("/swagger-resources") || uri.startsWith("/v2/api-docs") ||
//            uri.startsWith("/v3/api-docs") || uri.startsWith("/webjars") ||
//            uri.equals("/favicon.ico") || uri.equals("/csrf") || uri.equals("/error");
//    }
//}
